//============================================================================================
/**
 * @file	cmn_res.c
 * @brief	共通リソース
 * @author	Nozomu Saito
 *
 * モジュール名：CmnRes
 */
//============================================================================================
#include "common.h"
#include "system/arc_tool.h"
#include "system/arc_util.h"

#include "cmn_res.h"

#include "pkthln.naix"

#define RESOURCE_NUM	(4)
#define CMN_RES_PAL_NUM	(1)

#define	PRI_COUNT	(0)
#define PRI_PEN		(1)
#define PRI_CUR		(2)


typedef enum {
	CMN_RES_CODE_COUNTER,
	CMN_RES_CODE_MARKER,
	CMN_RES_CODE_SHADOW,
	CMN_RES_CODE_F2X2_SUB,
	CMN_RES_CODE_F4X4,
	CMN_RES_CODE_NEW_REC,
	CMN_RES_CODE_F2X2,
	CMN_RES_CODE_F2X4,
	CMN_RES_CODE_F2X2_S256,
	CMN_RES_CODE_PEN_M,
	CMN_RES_CODE_PEN_S,
	CMN_RES_CODE_CUR,
	CMN_RES_CODE_MAX,
}CMN_RES_CODE;

typedef enum {
	CMN_RES_CHAR,
	CMN_RES_CELL,
	CMN_RES_CELLANM,
	CMN_RES_NUM,
}CMN_RES_TYPE;

typedef struct CMN_RES_CNT_tag
{
	int HeapID;				//ヒープID
	int Res;
	NNS_G2D_VRAM_TYPE VramType;
	CLACT_U_RES_MANAGER_PTR	ResMan[RESOURCE_NUM];		// リソースマネージャ
	CLACT_U_RES_OBJ_PTR 	ResObjTbl[CMN_RES_NUM][CMN_RES_CODE_MAX];		// リソースオブジェテーブル(パレット以外)
	CLACT_U_RES_OBJ_PTR 	ResObjPal;		// リソースオブジェパレット
	CLACT_U_RES_OBJ_PTR 	ResObjPalSub;		// リソースオブジェパレット
}CMN_RES_CNT;

static void SetRes(CMN_RES_CNT_PTR cnt_ptr);

//--------------------------------------------------------------------------------------------
/**
 * 初期化
 *
 * @param	inHeapID			ヒープID
 * @param	inRes				リソースビット群
 * @param	inVramType			VRAMタイプ
 *
 * @return	CMN_RES_CNT_PTR		コントローラポインタ
 */
//--------------------------------------------------------------------------------------------
CMN_RES_CNT_PTR CmnRes_Init( const int inHeapID, const int inRes,
		const NNS_G2D_VRAM_TYPE inVramType )
{
	int i;
	CMN_RES_CNT_PTR cnt_ptr;
	u8 res_num[RESOURCE_NUM];

	for(i=0;i<RESOURCE_NUM;i++){
		res_num[i] = 0;
	}

	//リソース数を決定
	if (inRes & CMN_RES_COUNTER_BIT){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_MARKER_BIT){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_SHADOW_BIT ){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_F2X2SUB_BIT ){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_F4X4_BIT ){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_NEW_REC_BIT){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_F2X2_BIT ){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_F2X4_BIT ){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_F2X2S256_BIT ){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_PEN_M_BIT ){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_PEN_S_BIT ){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}
	if (inRes & CMN_RES_CUR_BIT ){
		res_num[CLACT_U_CHAR_RES]++;
		res_num[CLACT_U_CELL_RES]++;
		res_num[CLACT_U_CELLANM_RES]++;
	}

	res_num[CLACT_U_PLTT_RES] = 2;	//メインとサブで１つずつ


	cnt_ptr = sys_AllocMemory(inHeapID, sizeof(CMN_RES_CNT));
	cnt_ptr->HeapID = inHeapID;
	cnt_ptr->Res = inRes;
	cnt_ptr->VramType = inVramType;

	//リソースマネージャー初期化
	for(i=0;i<RESOURCE_NUM;i++){		//リソースマネージャー作成
		cnt_ptr->ResMan[i] = CLACT_U_ResManagerInit(res_num[i], i, cnt_ptr->HeapID);
	}

	SetRes(cnt_ptr);

	return cnt_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * 解放関数
 *
 * @param	cnt_ptr			ポケモンセルアクターコントローラーポインタ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void CmnRes_Free(CMN_RES_CNT_PTR cnt_ptr)
{
	int i;
	if (cnt_ptr->Res & CMN_RES_COUNTER_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_COUNTER]);
	}
	if (cnt_ptr->Res & CMN_RES_MARKER_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_MARKER]);
	}
	if (cnt_ptr->Res & CMN_RES_SHADOW_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_SHADOW]);
	}
	if (cnt_ptr->Res & CMN_RES_F2X2SUB_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_F2X2_SUB]);
	}
	if (cnt_ptr->Res & CMN_RES_F4X4_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_F4X4]);
	}
	if (cnt_ptr->Res & CMN_RES_NEW_REC_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_NEW_REC]);
	}
	if (cnt_ptr->Res & CMN_RES_F2X2_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_F2X2]);
	}
	if (cnt_ptr->Res & CMN_RES_F2X4_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_F2X4]);
	}
	if (cnt_ptr->Res & CMN_RES_F2X2S256_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_F2X2_S256]);
	}
	if (cnt_ptr->Res & CMN_RES_PEN_M_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_PEN_M]);
	}
	if (cnt_ptr->Res & CMN_RES_PEN_S_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_PEN_S]);
	}
	if (cnt_ptr->Res & CMN_RES_CUR_BIT){
		// キャラ転送マネージャー破棄
		CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[CLACT_U_CHAR_RES][CMN_RES_CODE_CUR]);
	}

	// パレット転送マネージャー破棄
	CLACT_U_PlttManagerDelete(cnt_ptr->ResObjPal);
	if (cnt_ptr->ResObjPalSub){
		CLACT_U_PlttManagerDelete(cnt_ptr->ResObjPalSub);
	}
	// キャラ・パレット・セル・セルアニメのリソースマネージャー破棄
	for(i=0;i<RESOURCE_NUM;i++){
		CLACT_U_ResManagerDelete(cnt_ptr->ResMan[i]);
	}

	sys_FreeMemoryEz(cnt_ptr);

}

//--------------------------------------------------------------------------------------------
/**
 * リソースビットのチェック
 *
 * @param	cnt_ptr			ポケモンセルアクターコントローラーポインタ
 * @param	inBit			リソースビット
 *
 * @return	u8				ビットが立っていれば、1　そうでなければ0
 */
//--------------------------------------------------------------------------------------------

u8 CmnRes_CheckCmnResBit(CMN_RES_CNT_PTR cnt_ptr, const u8 inBit)
{
	if (cnt_ptr == NULL){
		return 0;
	}
	return (cnt_ptr->Res & inBit);
}

//--------------------------------------------------------------------------------------------
/**
 * リソースマネージャポインタ取得
 *
 * @param	cnt_ptr			コントローラーポインタ
 * @param	inResType		リソースタイプ
 *
 * @return	CLACT_U_RES_MANAGER_PTR		リソースマネージャポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_U_RES_MANAGER_PTR	CmnRes_GetResMngPtr(CMN_RES_CNT_PTR cnt_ptr, const int inResType)
{
	return cnt_ptr->ResMan[inResType];
}

//--------------------------------------------------------------------------------------------
/**
 * リソースセット
 *
 * @param	cnt_ptr			コントローラーポインタ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
static void SetRes(CMN_RES_CNT_PTR cnt_ptr)
{
	if (cnt_ptr->Res & CMN_RES_COUNTER_BIT){
		//キャラ(カウント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_COUNTER] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_count_NCGR, FALSE, COUNT_ID,
									NNS_G2D_VRAM_TYPE_2DMAIN, cnt_ptr->HeapID);
		//セル(カウント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_COUNTER] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELL_RES],
								ARC_PKTHLN, NARC_pkthln_count_NCER, FALSE, COUNT_ID,
								CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(カウント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_COUNTER] = CLACT_U_ResManagerResAddArcKindCell(
							cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
							ARC_PKTHLN, NARC_pkthln_count_NANR, FALSE, COUNT_ID,
							CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_COUNTER] );
	}

	if (cnt_ptr->Res & CMN_RES_MARKER_BIT){
		//キャラ(マーカー)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_MARKER] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_marker_NCGR, FALSE, MARKER_ID,
									cnt_ptr->VramType, cnt_ptr->HeapID);
		//セル(マーカー)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_MARKER] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_marker_NCER, FALSE, MARKER_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(マーカー)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_MARKER] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
									ARC_PKTHLN, NARC_pkthln_marker_NANR, FALSE, MARKER_ID,
									CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_MARKER] );
	}

	if (cnt_ptr->Res & CMN_RES_SHADOW_BIT){
		//キャラ(影)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_SHADOW] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_shadow_NCGR, FALSE, SHADOW_ID,
									cnt_ptr->VramType, cnt_ptr->HeapID);
		//セル(影)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_SHADOW] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_shadow_NCER, FALSE, SHADOW_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(影)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_SHADOW] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
								ARC_PKTHLN, NARC_pkthln_shadow_NANR, FALSE, SHADOW_ID,
								CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_SHADOW] );
	}

	if (cnt_ptr->Res & CMN_RES_F4X4_BIT){
		//キャラ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F4X4] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_font4_4_NCGR, FALSE, F4X4_ID,
									NNS_G2D_VRAM_TYPE_2DMAIN, cnt_ptr->HeapID);
		//セル(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_F4X4] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_font4_4_NCER, FALSE, F4X4_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_F4X4] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
								ARC_PKTHLN, NARC_pkthln_font4_4_NANR, FALSE, F4X4_ID,
								CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F4X4] );
	}

	if (cnt_ptr->Res & CMN_RES_NEW_REC_BIT){
		//キャラ(カウント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_NEW_REC] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_new_records_NCGR, FALSE, NEW_REC_ID,
									NNS_G2D_VRAM_TYPE_2DMAIN, cnt_ptr->HeapID);
		//セル(カウント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_NEW_REC] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELL_RES],
								ARC_PKTHLN, NARC_pkthln_new_records_NCER, FALSE, NEW_REC_ID,
								CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(カウント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_NEW_REC] = CLACT_U_ResManagerResAddArcKindCell(
							cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
							ARC_PKTHLN, NARC_pkthln_new_records_NANR, FALSE, NEW_REC_ID,
							CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_NEW_REC] );
	}

	if (cnt_ptr->Res & CMN_RES_F2X2SUB_BIT){
		//キャラ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F2X2_SUB] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_font2_2_sub_NCGR, FALSE, F2X2SUB_ID,
									NNS_G2D_VRAM_TYPE_2DSUB, cnt_ptr->HeapID);
		//セル(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_F2X2_SUB] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_font2_2_sub_NCER, FALSE, F2X2SUB_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_F2X2_SUB] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
								ARC_PKTHLN, NARC_pkthln_font2_2_sub_NANR, FALSE, F2X2SUB_ID,
								CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F2X2_SUB] );
	}


	if (cnt_ptr->Res & CMN_RES_F2X2_BIT){
		//キャラ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F2X2] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_font2_2_NCGR, FALSE, F2X2_ID,
									NNS_G2D_VRAM_TYPE_2DMAIN, cnt_ptr->HeapID);
		//セル(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_F2X2] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_font2_2_NCER, FALSE, F2X2_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_F2X2] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
								ARC_PKTHLN, NARC_pkthln_font2_2_NANR, FALSE, F2X2_ID,
								CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F2X2] );
	}

	if (cnt_ptr->Res & CMN_RES_F2X4_BIT){
		//キャラ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F2X4] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_font2_4_NCGR, FALSE, F2X4_ID,
									NNS_G2D_VRAM_TYPE_2DMAIN, cnt_ptr->HeapID);
		//セル(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_F2X4] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_font2_4_NCER, FALSE, F2X4_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_F2X4] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
								ARC_PKTHLN, NARC_pkthln_font2_4_NANR, FALSE, F2X4_ID,
								CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F2X4] );
	}

	if (cnt_ptr->Res & CMN_RES_F2X2S256_BIT){
		//キャラ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F2X2_S256] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_font2_2_sub256_NCGR, FALSE, F2X2S256_ID,
									NNS_G2D_VRAM_TYPE_2DSUB, cnt_ptr->HeapID);
		//セル(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_F2X2_S256] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_font2_2_sub256_NCER, FALSE, F2X2S256_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_F2X2_S256] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
								ARC_PKTHLN, NARC_pkthln_font2_2_sub256_NANR, FALSE, F2X2S256_ID,
								CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_F2X2_S256] );
	}

	if (cnt_ptr->Res & CMN_RES_PEN_M_BIT){
		//キャラ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_PEN_M] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_pen_NCGR, FALSE, PEN_ID,
									NNS_G2D_VRAM_TYPE_2DMAIN, cnt_ptr->HeapID);
		//セル(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_PEN_M] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_pen_NCER, FALSE, PEN_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_PEN_M] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
								ARC_PKTHLN, NARC_pkthln_pen_NANR, FALSE, PEN_ID,
								CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_PEN_M] );
	}

	if (cnt_ptr->Res & CMN_RES_PEN_S_BIT){
		//キャラ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_PEN_S] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_pen_sub_NCGR, FALSE, PEN_ID,
									NNS_G2D_VRAM_TYPE_2DSUB, cnt_ptr->HeapID);
		//セル(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_PEN_S] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_pen_sub_NCER, FALSE, PEN_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_PEN_S] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
								ARC_PKTHLN, NARC_pkthln_pen_sub_NANR, FALSE, PEN_ID,
								CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_PEN_S] );
	}

	if (cnt_ptr->Res & CMN_RES_CUR_BIT){
		//キャラ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_CUR] = CLACT_U_ResManagerResAddArcChar(
									cnt_ptr->ResMan[CLACT_U_CHAR_RES],
									ARC_PKTHLN, NARC_pkthln_cursor_NCGR, FALSE, CUR_ID,
									NNS_G2D_VRAM_TYPE_2DMAIN, cnt_ptr->HeapID);
		//セル(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELL][CMN_RES_CODE_CUR] = CLACT_U_ResManagerResAddArcKindCell(
									cnt_ptr->ResMan[CLACT_U_CELL_RES],
									ARC_PKTHLN, NARC_pkthln_cursor_NCER, FALSE, CUR_ID,
									CLACT_U_CELL_RES, cnt_ptr->HeapID);
		//セルアニメ(サブフォント)
		cnt_ptr->ResObjTbl[CMN_RES_CELLANM][CMN_RES_CODE_CUR] = CLACT_U_ResManagerResAddArcKindCell(
								cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
								ARC_PKTHLN, NARC_pkthln_cursor_NANR, FALSE, CUR_ID,
								CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
		// Chara転送
		CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[CMN_RES_CHAR][CMN_RES_CODE_CUR] );
	}

	//パレット
	{
		NNS_G2D_VRAM_TYPE vram_type;
		if (cnt_ptr->VramType == NNS_G2D_VRAM_TYPE_2DSUB){
			vram_type = NNS_G2D_VRAM_TYPE_MAX;
		}else{
			vram_type = cnt_ptr->VramType;
		}
		cnt_ptr->ResObjPal = CLACT_U_ResManagerResAddArcPltt(
							cnt_ptr->ResMan[CLACT_U_PLTT_RES],
							ARC_PKTHLN, NARC_pkthln_cmn_res_NCLR, FALSE, CMN_RES_PAL_ID,
							vram_type, CMN_RES_PAL_NUM, cnt_ptr->HeapID);
	}
    // パレット転送
    CLACT_U_PlttManagerSet( cnt_ptr->ResObjPal );

	cnt_ptr->ResObjPalSub = NULL;
	if ( (cnt_ptr->Res & CMN_RES_F2X2SUB_BIT)||
		 (cnt_ptr->Res & CMN_RES_F2X2S256_BIT) ||
		 (cnt_ptr->Res & CMN_RES_PEN_S_BIT) ){
		cnt_ptr->ResObjPalSub = CLACT_U_ResManagerResAddArcPltt(
							cnt_ptr->ResMan[CLACT_U_PLTT_RES],
							ARC_PKTHLN, NARC_pkthln_cmn_res_sub_NCLR, FALSE, CMN_RES_SUB_PAL_ID,
							NNS_G2D_VRAM_TYPE_2DSUB, CMN_RES_PAL_NUM, cnt_ptr->HeapID);
		CLACT_U_PlttManagerSet( cnt_ptr->ResObjPalSub );
	}
}

//--------------------------------------------------------------------------------------------
/**
 * カウントダウンアクター作成
 *
 * @param	pResCntPtr			リソースコントロールポインタ
 * @param	pClActSetPtr		アクターセットポインタ
 * @param	inBGPriority		BGプライオリティ
 * @param	inDrawArea			描画エリア
 * @param	inHeapID			ヒープID
 *
 * @return	CLACT_WORK_PTR		カウントダウンのアクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR CmnRes_CreateCounterAct(	CMN_RES_CNT_PTR pResCntPtr,
										CLACT_SET_PTR pClActSetPtr,
										const int inBGPriority,
										const NNS_G2D_VRAM_TYPE inDrawArea,
										const int inHeapID )
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						COUNT_ID, CMN_RES_PAL_ID, COUNT_ID, COUNT_ID,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CHAR_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_PLTT_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELL_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELLANM_RES),
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= pClActSetPtr;
		add.ClActHeader	= &cl_act_header;
		add.heap		= inHeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= PRI_COUNT;
		add.DrawArea	= inDrawArea;
		//↑

		clact_ptr = CLACT_Add(&add);
		GF_ASSERT(clact_ptr!=NULL);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

	}

	//開いてる場所にポインタセット
	return clact_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * サブ画面2x2数字アクター作成
 *
 * @param	pResCntPtr			リソースコントロールポインタ
 * @param	pClActSetPtr		アクターセットポインタ
 * @param	inBGPriority		BGプライオリティ
 * @param	inHeapID			ヒープID
 *
 * @return	CLACT_WORK_PTR		アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR CmnRes_CreateF2X2SubAct(	CMN_RES_CNT_PTR pResCntPtr,
										CLACT_SET_PTR pClActSetPtr,
										const int inBGPriority,
										const int inHeapID )
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						F2X2SUB_ID, CMN_RES_SUB_PAL_ID, F2X2SUB_ID, F2X2SUB_ID,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CHAR_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_PLTT_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELL_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELLANM_RES),
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= pClActSetPtr;
		add.ClActHeader	= &cl_act_header;
		add.heap		= inHeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= 0;
		add.DrawArea	= NNS_G2D_VRAM_TYPE_2DSUB;
		//↑

		clact_ptr = CLACT_Add(&add);
		GF_ASSERT(clact_ptr!=NULL);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

	}

	//開いてる場所にポインタセット
	return clact_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * 2x2数字アクター作成
 *
 * @param	pResCntPtr			リソースコントロールポインタ
 * @param	pClActSetPtr		アクターセットポインタ
 * @param	inBGPriority		BGプライオリティ
 * @param	inHeapID			ヒープID
 *
 * @return	CLACT_WORK_PTR		アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR CmnRes_CreateF2X2Act(	CMN_RES_CNT_PTR pResCntPtr,
										CLACT_SET_PTR pClActSetPtr,
										const int inBGPriority,
										const int inHeapID )
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						F2X2_ID, CMN_RES_PAL_ID, F2X2_ID, F2X2_ID,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CHAR_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_PLTT_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELL_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELLANM_RES),
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= pClActSetPtr;
		add.ClActHeader	= &cl_act_header;
		add.heap		= inHeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= 0;
		add.DrawArea	= NNS_G2D_VRAM_TYPE_2DMAIN;
		//↑

		clact_ptr = CLACT_Add(&add);
		GF_ASSERT(clact_ptr!=NULL);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

	}

	//開いてる場所にポインタセット
	return clact_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * 4x4数字アクター作成
 *
 * @param	pResCntPtr			リソースコントロールポインタ
 * @param	pClActSetPtr		アクターセットポインタ
 * @param	inBGPriority		BGプライオリティ
 * @param	inHeapID			ヒープID
 *
 * @return	CLACT_WORK_PTR		アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR CmnRes_CreateF4X4Act(	CMN_RES_CNT_PTR pResCntPtr,
										CLACT_SET_PTR pClActSetPtr,
										const int inBGPriority,
										const int inHeapID )
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						F4X4_ID, CMN_RES_PAL_ID, F4X4_ID, F4X4_ID,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CHAR_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_PLTT_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELL_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELLANM_RES),
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= pClActSetPtr;
		add.ClActHeader	= &cl_act_header;
		add.heap		= inHeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= 0;
		add.DrawArea	= NNS_G2D_VRAM_TYPE_2DMAIN;
		//↑

		clact_ptr = CLACT_Add(&add);
		GF_ASSERT(clact_ptr!=NULL);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

	}

	//開いてる場所にポインタセット
	return clact_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * ニューレコードアクター作成
 *
 * @param	pResCntPtr			リソースコントロールポインタ
 * @param	pClActSetPtr		アクターセットポインタ
 * @param	inBGPriority		BGプライオリティ
 * @param	inHeapID			ヒープID
 *
 * @return	CLACT_WORK_PTR		アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR CmnRes_CreateNewRecAct(	CMN_RES_CNT_PTR pResCntPtr,
										CLACT_SET_PTR pClActSetPtr,
										const int inBGPriority,
										const int inHeapID )
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						NEW_REC_ID, CMN_RES_PAL_ID, NEW_REC_ID, NEW_REC_ID,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CHAR_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_PLTT_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELL_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELLANM_RES),
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= pClActSetPtr;
		add.ClActHeader	= &cl_act_header;
		add.heap		= inHeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= PRI_COUNT;
		add.DrawArea	= NNS_G2D_VRAM_TYPE_2DMAIN;
		//↑

		clact_ptr = CLACT_Add(&add);
		GF_ASSERT(clact_ptr!=NULL);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

	}

	//開いてる場所にポインタセット
	return clact_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * 画面2x4数字アクター作成
 *
 * @param	pResCntPtr			リソースコントロールポインタ
 * @param	pClActSetPtr		アクターセットポインタ
 * @param	inBGPriority		BGプライオリティ
 * @param	inHeapID			ヒープID
 *
 * @return	CLACT_WORK_PTR		アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR CmnRes_CreateF2X4Act(	CMN_RES_CNT_PTR pResCntPtr,
										CLACT_SET_PTR pClActSetPtr,
										const int inBGPriority,
										const int inHeapID )
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						F2X4_ID, CMN_RES_PAL_ID, F2X4_ID, F2X4_ID,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CHAR_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_PLTT_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELL_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELLANM_RES),
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= pClActSetPtr;
		add.ClActHeader	= &cl_act_header;
		add.heap		= inHeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= 0;
		add.DrawArea	= NNS_G2D_VRAM_TYPE_2DMAIN;
		//↑

		clact_ptr = CLACT_Add(&add);
		GF_ASSERT(clact_ptr!=NULL);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

	}

	//開いてる場所にポインタセット
	return clact_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * サブ画面2x2数字アクター作成
 *
 * @param	pResCntPtr			リソースコントロールポインタ
 * @param	pClActSetPtr		アクターセットポインタ
 * @param	inBGPriority		BGプライオリティ
 * @param	inHeapID			ヒープID
 *
 * @return	CLACT_WORK_PTR		アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR CmnRes_CreateF2X2S256Act(	CMN_RES_CNT_PTR pResCntPtr,
										CLACT_SET_PTR pClActSetPtr,
										const int inBGPriority,
										const int inHeapID )
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						F2X2S256_ID, CMN_RES_SUB_PAL_ID, F2X2S256_ID, F2X2S256_ID,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CHAR_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_PLTT_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELL_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELLANM_RES),
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= pClActSetPtr;
		add.ClActHeader	= &cl_act_header;
		add.heap		= inHeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= 0;
		add.DrawArea	= NNS_G2D_VRAM_TYPE_2DSUB;
		//↑

		clact_ptr = CLACT_Add(&add);
		GF_ASSERT(clact_ptr!=NULL);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

	}

	//開いてる場所にポインタセット
	return clact_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * ペンアクター作成
 *
 * @param	pResCntPtr			リソースコントロールポインタ
 * @param	pClActSetPtr		アクターセットポインタ
 * @param	inVramType			VRAMタイプ
 * @param	inBGPriority		BGプライオリティ
 * @param	inHeapID			ヒープID
 *
 * @return	CLACT_WORK_PTR		アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR CmnRes_CreatePenAct(	CMN_RES_CNT_PTR pResCntPtr,
									CLACT_SET_PTR pClActSetPtr,
									const int inVramType,
									const int inBGPriority,
									const int inHeapID )
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;
	int pal_id;
	if (inVramType == NNS_G2D_VRAM_TYPE_2DMAIN){
		pal_id = CMN_RES_PAL_ID;
	}else{
		pal_id = CMN_RES_SUB_PAL_ID;
	}

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						PEN_ID, pal_id, PEN_ID, PEN_ID,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CHAR_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_PLTT_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELL_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELLANM_RES),
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= pClActSetPtr;
		add.ClActHeader	= &cl_act_header;
		add.heap		= inHeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= PRI_PEN;
		add.DrawArea	= inVramType;//NNS_G2D_VRAM_TYPE_2DSUB;
		//↑

		clact_ptr = CLACT_Add(&add);
		GF_ASSERT(clact_ptr!=NULL);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

	}

	//開いてる場所にポインタセット
	return clact_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * カーソルアクター作成
 *
 * @param	pResCntPtr			リソースコントロールポインタ
 * @param	pClActSetPtr		アクターセットポインタ
 * @param	inBGPriority		BGプライオリティ
 * @param	inHeapID			ヒープID
 *
 * @return	CLACT_WORK_PTR		アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR CmnRes_CreateCurAct(	CMN_RES_CNT_PTR pResCntPtr,
										CLACT_SET_PTR pClActSetPtr,
										const int inBGPriority,
										const int inHeapID )
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						CUR_ID, CMN_RES_PAL_ID, CUR_ID, CUR_ID,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CHAR_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_PLTT_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELL_RES),
						CmnRes_GetResMngPtr(pResCntPtr, CLACT_U_CELLANM_RES),
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= pClActSetPtr;
		add.ClActHeader	= &cl_act_header;
		add.heap		= inHeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= PRI_CUR;
		add.DrawArea	= NNS_G2D_VRAM_TYPE_2DMAIN;
		//↑

		clact_ptr = CLACT_Add(&add);
		GF_ASSERT(clact_ptr!=NULL);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

	}

	//開いてる場所にポインタセット
	return clact_ptr;
}